import request from '@/utils/request'
import type { BaseResponse } from '@/types/common/response'
import type {
  Role,
  CreateRoleRequest,
  UpdateRoleRequest,
  AssignRolePermissionsRequest
} from '@/types/api/role'
import type { Permission } from '@/types/api/permission'

/**
 * 角色管理相关API
 */
export const roleApi = {
  /**
   * 获取角色列表
   */
  getRoleList() {
    return request.get<BaseResponse<Role[]>>('/roles')
  },

  /**
   * 获取角色详情
   * @param id 角色ID
   */
  getRoleDetail(id: number) {
    return request.get<BaseResponse<Role>>(`/roles/${id}`)
  },

  /**
   * 创建角色
   * @param data 角色信息
   */
  createRole(data: CreateRoleRequest) {
    return request.post<BaseResponse<null>>('/roles', data)
  },

  /**
   * 更新角色
   * @param id 角色ID
   * @param data 角色信息
   */
  updateRole(id: number, data: UpdateRoleRequest) {
    return request.put<BaseResponse<null>>(`/roles/${id}`, data)
  },

  /**
   * 删除角色
   * @param id 角色ID
   */
  deleteRole(id: number) {
    return request.delete<BaseResponse<null>>(`/roles/${id}`)
  },

  /**
   * 获取角色的权限列表
   * @param roleId 角色ID
   */
  getRolePermissions(roleId: number) {
    return request.get<BaseResponse<Permission[]>>(`/roles/${roleId}/permissions`)
  },

  /**
   * 为角色分配权限
   * @param roleId 角色ID
   * @param data 权限分配信息
   */
  assignPermissionsToRole(roleId: number, data: AssignRolePermissionsRequest) {
    return request.post<BaseResponse<null>>(`/roles/${roleId}/permissions`, data)
  },

  /**
   * 移除角色权限
   * @param roleId 角色ID
   * @param permissionId 权限ID
   */
  removePermissionFromRole(roleId: number, permissionId: number) {
    return request.delete<BaseResponse<null>>(`/roles/${roleId}/permissions/${permissionId}`)
  }
}
